package cn.flexui.flexuiserver.domain.dto;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

@Data
public class PaymentMethod {

    @JsonProperty("id")
    private String id;  // Stripe分配的唯一标识符

    @JsonProperty("type")
    private String type;  // 支付方法类型，如 "card"

    @JsonProperty("card")
    private Card card;  // 卡片详细信息

    @JsonProperty("billing_details")
    private BillingDetails billingDetails;  // 账单详细信息

    @Data
    public static class Card {
        @JsonProperty("brand")
        private String brand;  // 卡片品牌（例如：visa, mastercard）

        @JsonProperty("last4")
        private String last4;  // 卡号后四位

        @JsonProperty("exp_month")
        private Integer expMonth;  // 过期月份

        @JsonProperty("exp_year")
        private Integer expYear;  // 过期年份

        @JsonProperty("funding")
        private String funding;  // 资金来源（例如：credit, debit）
    }

    @Data
    public static class BillingDetails {
        @JsonProperty("address")
        private Address address;  // 账单地址

        @JsonProperty("email")
        private String email;  // 账单邮箱

        @JsonProperty("name")
        private String name;  // 账单姓名

        @JsonProperty("phone")
        private String phone;  // 账单电话
    }

    @Data
    public static class Address {
        @JsonProperty("city")
        private String city;  // 城市

        @JsonProperty("country")
        private String country;  // 国家

        @JsonProperty("line1")
        private String line1;  // 地址行1

        @JsonProperty("line2")
        private String line2;  // 地址行2

        @JsonProperty("postal_code")
        private String postalCode;  // 邮政编码

        @JsonProperty("state")
        private String state;  // 州/省
    }
}
